OpenSilex, a Scientific Information System

The project involved the development, deployment, and installation of the OpenSilex Information System, a platform dedicated to scientific data management. The mission took place between September 2020 and August 2021, in collaboration with the LEPSE laboratory (Laboratoire d'Ecophysiologie des Plantes sous Stress Environnementaux). The development was supervised by the Information Systems Department (DSI) of INRAE (National Research Institute for Agriculture, Food and Environment), with the UMR (Joint Research Unit) LEPSE responsible for scientific and business aspects.

Tasks & Objectives

As a fullstack developer, my role involved developing and debugging both the frontend and backend of the code repository, while working on the deployment and installation of the system. One of the main objectives was to ensure smooth user journeys, particularly for data deposition and retrieval on the platform.

Success criteria included not only bug fixes and application maintenance but also complete deployment and installation of the system aligned with the platform's technologies, particularly API Platform from Symfony. A key objective was to decouple deployment work from developers, allowing scientists to manage their own installations. Finally, it was essential to develop robust end-to-end tests.

Actions and Development

My first step was to familiarize myself with the OpenSilex environment, including a Symfony-developed backend and an Angular frontend. I then created a specific repository to host the deployment scripts and set up a pipeline to automate the deployment process. For end-to-end tests, I used Robot Framework with the Selenium library.

Regular exchanges with the project, scientific, and IT teams, as well as with the former development team, facilitated my work. Collaboration with the LEPSE UMR was crucial for developing a common deployment strategy, establishing a shared vocabulary. Despite the project's complexity and significant technical debt, implementing the deployment process represented a major challenge but also a learning opportunity.

Key decisions were made collectively during bi-weekly meetings. For the deployment process, I presented a Proof of Concept (POC) before implementing the complete solution.

Results

The results are multiple: correction of numerous bugs, improvement of user feedback and ergonomics, evolution of the model for managing deployments, and integration of the deployment process using JSON-LD format, compliant with a scientific ontology. A complex CI (continuous integration) was co-built to synchronize the deployment process with the API. The repository for this ETL (extract, transform, load) is available here. Additionally, the end-to-end tests implemented with Robot Framework cover all key user journeys.

I learned to master the Symfony framework and PHP language in depth, to work in a team with a clean CI, and to use Robot Framework with Selenium. Finally, the custom ETL work, transversal between API Platform and web semantic ontology formats (RDF/OWL), strengthened my technical skills.

Technical Stack

The technologies used include: PHP, Symfony, Docker Compose, TypeScript, Angular, Robot Framework, Selenium, as well as Markdown for documentation. For the ETL between deployment files and Symfony, I chose Node.js, while other technological choices were imposed by the project. The OpenSilex information system, complex in terms of business rules, required mastery of both backend (PHP) and frontend (TypeScript). Existing technical debt also posed a challenge, which I addressed by refactoring and simplifying the code throughout the evolutionary maintenance. Finally, learning Robot Framework and Selenium constituted an important step in managing automated tests.